/**  
* @author hongchun.li  
* @date 2013-4-21 下午02:28:48
* @version V1.0  
*/ 
package com.apis.bussiness.entries;
import java.io.Serializable;  
import java.util.List;  
import org.hibernate.Query;  
import org.hibernate.Session;  
import org.hibernate.Transaction;

import com.apis.util.HibernateUtil;
import com.apis.util.PageUtil;
  
/**
 * @author hongchun.li
 *
 */
public interface IBaseMgr  {
	 
    /**
     * 添加
     * 
     * @param obj
     */
    public void save(Object obj);
 
    /**
     * 删除
     * 
     * @param obj
     */
    public void delete(Object obj);
    /**
     * 根据主键删除
     * 
     * @param clazz
     * @param id
     */
    public void deleteById(Class clazz, Serializable id);
 
    /**
     * 修改
     * 
     * @param obj
     */
    public void update(Object obj);
 
    /**
     * 根据主键查询
     * 
     * @param clazz
     * @param id
     * @return
     */
    public Object get(Class clazz, Serializable id);
 
    /**
     * 根据多个属性查询
     * 
     * @param clazz
     * @param strs
     * @return
     */
    public Object getByNProperty(Class clazz, String... strs);
    
    /**
     * 根据属性查询
     * 
     * @param clazz
     * @param pName
     * @param pValue
     * @return
     */
    public Object getUniqueByProperty(Class clazz, String pName, Object pValue);
 
    /**
     * 根据HQL查询
     * 
     * @param hql
     * @return
     */
    public Object getUniqueByHql(String hql);
 
    /**
     * 根据SQL查询
     * 
     * @param sql
     * @param clazz
     * @return
     */
    public Object getUniqueBySql(String sql, Class clazz);
 
    // ////////////////////查询单个完毕////////////////
 
    /**
     * 查询所有
     */
    public List<Object> getList(Class clazz);
 
    /**
     * 根据属性查询 全部
     * 
     * @param clazz
     * @param pName
     * @param pValue
     * @return
     */
    public List<Object> getListByProperty(Class clazz, String pName,
            Object pValue);
    /**
     * 根据属性和条件查询 全部
     * 
     * @param clazz
     * @param pName
     * @param pValue
     * @param condition
     * @return
     */
    public List<Object> getListByProperty(Class clazz, String pName,
            Object pValue, String condition);
    /**
     * 根据多个属性模糊查询
     * 
     * @param clazz
     * @param strs
     * @return
     */
    public List getListByNProperty(Class clazz, String... strs);
    /**
     * 根据SQL查询 全部
     * 
     * @param hql
     * @return
     */
    public List<Object> getListByHql(String hql);
 
    /**
     * 根据SQL查询全部
     * 
     * @param sql
     * @param clazz
     * @return
     */
    public List getListBySql(String sql, Class clazz);
 
    /**
     * 分页查询全部
     * 
     * @param calzz
     * @param pageUtil
     */
    public void getListByPage(Class calzz, PageUtil pageUtil);
    /**
     * 根据SQL分页查询
     * 
     * @param hql
     * @param pageUtil
     */
    public void getListByPage(String hql, PageUtil pageUtil);
}